namespace Patterns.Interfaces
{
    public interface IAggregate
    {
        void Initialize();
        void Accumulate(object accumulate);
        object Terminate();
    }

    public interface IAggregate<TAccumulate, TTerminate> : IAggregate
    {
        void Accumulate(TAccumulate accumulate);
        new TTerminate Terminate();
    }
}